import xhr from './index.js'
import API from './apiConfig.js'

/**
 * 共享删除方法
 * @param {string} name - 要删除的接口
 * @param {object} data - 要更新的数据
 * @returns {Promise} - 返回一个 Promise 对象
 */
export async function removePublic(name, data, callBack) {
	try {
		uni.showModal({
			title: '是否删除',
			success: async ({
				confirm
			}) => {
				if (confirm) {
					const {
						message
					} = await xhr.post(API[name].remove, data);
					uni.showToast({
						title: message
					});
					callBack();
				}
			}
		})

	} catch (error) {
		throw error;
	}
}
/**
 * 共享更新方法
 * @param {string} name - 要更新的接口
 * @param {object} data - 要更新的数据
 * @returns {Promise} - 返回一个 Promise 对象
 */
export async function updatePublic(name, data, callBack) {
	try {
		const {
			message
		} = await xhr.post(API[name].update, data);
		setTimeout(() => {
			uni.showToast({
				title: message,
				duration: 2000
			});
		}, 100);

		callBack();
	} catch (error) {
		throw error;
	}
}
/**
 * 共享创建方法
 * @param {string} name - 要创建的接口
 * @param {object} data - 要创建的数据
 * @returns {Promise} - 返回一个 Promise 对象
 */
export async function createPublic(name, data, callBack) {
	try {
		const response = await xhr.post(API[name].create, data);
		setTimeout(() => {
			uni.showToast({
				title: response.message,
				duration: 2000
			});
		}, 100);
		callBack(response.data);
		return response.data
	} catch (error) {
		throw error;
	}
}
/**
 * 共享获取列表方法
 * @param {string} name - 要获取的接口
 * @param {object} data - 要创建的数据
 * @returns {Promise} - 返回一个 Promise 对象
 */
export async function listPublic(name, data = {}, callBack = () => {}) {
	try {
		const response = await xhr.get(API[name].list, data);
		callBack(response.data);
		return response.data;
	} catch (error) {
		throw error;
	}
}
/**
 * 共享提交方法
 * @param {string} name - 要获取的接口
 * @param {object} data - 要创建的数据
 * @returns {Promise} - 返回一个 Promise 对象
 */
export async function postPublic([name, list, key = 'get'], data = {}, callBack = () => {}) { 
	try {
		const response = await xhr[key](API[name][list], data);
		callBack(response);
		return response;
	} catch (error) {
		throw error;
	}
}